// N1AutoreleasePool.cpp: implementation of the N1AutoreleasePool class.
//
//////////////////////////////////////////////////////////////////////

#include "N1AutoreleasePool.h"
#include "N1ThreadSingleton.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
using namespace std;

N1ThreadSingleton< list<N1AutoreleasePool*>* >  m_pools = (void*)NULL;


N1AutoreleasePool::N1AutoreleasePool() {
    if(!m_pools)
    {
        m_pools = new list<N1AutoreleasePool*>;
    }
    m_pools->push_front(this);
}

N1AutoreleasePool::~N1AutoreleasePool() {
    m_pools->pop_front();
}

void N1AutoreleasePool::addObject(N1Object *obj) {
    m_list->push_front(obj);
}

N1AutoreleasePool* N1AutoreleasePool::defaultPool() {
    return m_pools->front();
}

N1AutoreleasePool* N1DefaultPool() {
    return N1AutoreleasePool::defaultPool();
}
